#!/bin/bash

# 接单平台停止脚本

# 设置变量
APP_NAME="order-platform"
PID_FILE="${APP_NAME}.pid"

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# 打印带颜色的消息
print_message() {
    local color=$1
    local message=$2
    echo -e "${color}${message}${NC}"
}

# 停止应用
stop_app() {
    if [ ! -f "$PID_FILE" ]; then
        print_message $YELLOW "应用未运行或PID文件不存在"
        return 0
    fi
    
    PID=$(cat $PID_FILE)
    
    if ! ps -p $PID > /dev/null 2>&1; then
        print_message $YELLOW "应用进程不存在，清理PID文件"
        rm -f $PID_FILE
        return 0
    fi
    
    print_message $YELLOW "正在停止应用，PID: $PID"
    
    # 发送TERM信号
    kill $PID
    
    # 等待进程结束
    local count=0
    while ps -p $PID > /dev/null 2>&1; do
        sleep 1
        count=$((count + 1))
        
        if [ $count -eq 10 ]; then
            print_message $YELLOW "正常停止超时，强制终止进程..."
            kill -9 $PID
            break
        fi
    done
    
    # 检查是否成功停止
    if ps -p $PID > /dev/null 2>&1; then
        print_message $RED "✗ 应用停止失败！"
        return 1
    else
        print_message $GREEN "✓ 应用已成功停止"
        rm -f $PID_FILE
        return 0
    fi
}

# 主函数
main() {
    print_message $GREEN "=================================="
    print_message $GREEN "    接单平台停止脚本 v1.0"
    print_message $GREEN "=================================="
    
    stop_app
    
    print_message $GREEN "=================================="
}

# 执行主函数
main "$@"